package com.example.apicommon;

import java.io.PrintStream;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.*;

/**
 * @author: CYL
 * @DATE: 2023/7/23
 * @TIME: 16:40
 **/
public class githubJava {
    /**
     * 数组扁平化。
     * 使用递归实现，Arrays.stream().flatMapToInt()
     * flatMapToInt()里的代码如下：
     *
      if (o instanceof Object[]) {
           还是数组，递归调用deepFlatten，返回结果为int[]
           再用Arrays.stream(T[])方法打包成stream 返回为 flatMapToInt 方法
          return Arrays.stream(deepFlatten((Object[]) o));
      }
      return IntStream.of((Integer) o); 递归出口，o是一个单独的数字，打包成stream 返回为 flatMapToInt 方法

     测试：注意不要使用 new int[]{1};  https://bbs.csdn.net/topics/370185855
     Object[] input = new Object[3];
     input[0] = new Integer[]{1};
     input[1] = new Integer[]{1, 2};
     input[2] = new Integer[]{1, 2, 3};
     int[] ints = deepFlatten(input);
     for (int i : ints) {
        System.out.println(i);
     }
     */

    public static int[] deepFlatten(Object[] input) {
        return Arrays.stream(input)
                .flatMapToInt(o -> (o instanceof Object[]) ? Arrays.stream(deepFlatten((Object[]) o)) : IntStream.of((Integer) o))
                .toArray();
    }

    public static int countVowels(String input) {
        return input.replaceAll("[^aeiouAEIOU]", "").length();
    }

    public static void main(String[] args) {

    }
}
